package com.alfy.websocketdemo;

import javax.websocket.*;
import java.net.URI;
import java.nio.ByteBuffer;

/**
 * WebSocket 客户端
 */
@ClientEndpoint
public class WebSocketClient {

    /**
     * 当前会话对象
     */
    public Session session;

    /**
     * open 事件
     *
     * @param session session
     */
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("websocket 连接已经建立");
        this.session = session;
    }

    /**
     * message 事件
     *
     * @param session session
     * @param message message
     */
    @OnMessage
    public void onMessage(Session session, String message) {
        System.out.println("（String）" + message);
    }

    /**
     * message 事件
     *
     * @param session session
     * @param message message
     */
    @OnMessage
    public void onMessage(Session session, ByteBuffer message) {
        System.out.println("（二进制）" + message);
    }

    /**
     * close 事件
     *
     * @param session session
     */
    @OnClose
    public void onClose(Session session) {
        System.out.println("websocket 连接已经关闭");
    }

    /**
     * error 事件
     *
     * @param session   session
     * @param throwable throwable
     */
    @OnError
    public void onError(Session session, Throwable throwable) {
        System.out.println("websocket 连接出现错误: " + throwable.getMessage());
    }

    /**
     * 连接客户端
     *
     * @param url ws 地址
     * @throws Exception 连接异常对象
     */
    public void connect(String url) throws Exception {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        container.connectToServer(this, new URI(url));
    }

}